package com.io.filewriters;

import org.junit.Test;

import java.io.*;

public class Example01 {
    public static void main(String[] args) {
        System.out.println("fileWriter 学习内容");
    }

    @Test
    public void createFile() {
        // 创建文件 并且写入相关内容
        String path = "E:\\test\\";
        File file = new File(path + "writer.txt");
        if (file.exists()) {
            System.out.println("文件已经存在");
            // 写入内容
        } else {
            // 创建文件
            try {
                boolean newFile = file.createNewFile();
                System.out.println(newFile?"创建成功":"创建失败");
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("创建失败");
            }
        }
    }

    /**
     * 写入操作
     */
    @Test
    public void single() {
        /**
         * write(int) : 写入单个字符
         * write(char[]) : 写入指定数组
         * write(char[],off,len): 写入指定数组的指定部分
         * write(string): 写入整个字符串
         * write(string,off,len): 写入字符串的指定部分
         * 注意：
         * FileWriter 使用后，必须要关闭(close)或者刷新(flush),否则无法写入执行文件
         */
        String path = "E:\\test\\writer.txt";
        FileWriter fileWriter = null;
        char[] str = {'h','e','l','l','o',',','w','o','r','l','d'};
        try {
            fileWriter = new FileWriter(path,true);
            // 1.写入单个字符
            fileWriter.write('H');
            // 2.写入指定数组
            fileWriter.write(str);
            // 3.写入指定数组的指定部分
            fileWriter.write(str,0,str.length);
            // 或者
            fileWriter.write("测试退费功能".toCharArray(),0,3);
            // 4.写入字符串操作
            String china = "中国世界之最";
            fileWriter.write(china);
            fileWriter.write("\r\n"); // 换行
            System.out.println(china.length()); // 6
            // 5.写入指定位置字符操作
            fileWriter.write(china,0,2);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源流
            if (fileWriter != null) {
                try {
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("写入结束");
    }

    // 读取文件内容
    @Test
    public void read() {
        String path = "E:\\test\\writer.txt";
        FileReader fileReader = null;
        char[]  buf = new char[10];
        int len = 0;
        try {
            fileReader = new FileReader(path);
            while ((len = fileReader.read(buf)) != -1) {
                System.out.print(new String(buf,0,len));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源流
            if (fileReader != null) {
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
